<?php
class WoonplaatsController extends AdminController{
	public function actionIndex(){
		$mW = new Mapper_Woonplaats();
		$this->woonplaatsen = $mW->getAll();
	}

	public function actionAdd(){
		$mP = new Mapper_Provincie();

		if($this->request->isPost()){
			$mW = new Mapper_Woonplaats();

			$woonplaats = new Woonplaats();
			if($woonplaats = $this->request->createFromPost($woonplaats)){
				$provincie = $mP->get($woonplaats->provincie_id);
				if($provincie instanceof Provincie){
					if($mW->insert($woonplaats)){
						$this->redirect($this->module, $this->controller);
					}
				}
			}
		}

		$this->provincies = $mP->getAll();
	}

	public function actionRemove(){
		if($this->request->hasParam("woonplaats_id")){
			$mW = new Mapper_Woonplaats();

			$this->woonplaats = $mW->get($this->request->getParam("woonplaats_id"));

			if($this->woonplaats->IsInUse){
				$this->redirect($this->module, $this->controller);
			}

			if($this->request->hasParam("confirm")){
				try{
					if($mW->remove($this->woonplaats)){
						$this->redirect($this->module, $this->controller);
					}
				}catch(Exception $e){

				}
			}
		}else{
			$this->redirect($this->module, $this->controller);
		}
	}

	public function actionEdit(){
		if($this->request->hasParam("woonplaats_id")){
			$mW = new Mapper_Woonplaats();
			$mP = new Mapper_Provincie();

			// @TODO clone to others as well
			$this->woonplaats	= $mW->get($this->request->getParam("woonplaats_id"));
			$prevWoonplaats		= clone $this->woonplaats;

			if($this->request->isPost()){
				$woonplaats = $this->request->createFromPost($this->woonplaats);

				$provincie = $mP->get($woonplaats->provincie_id);

				if($provincie instanceof Provincie){
					if($mW->update($woonplaats, $prevWoonplaats)){
						$this->redirect($this->module, $this->controller);
					}
				}
			}

			$this->provincies = $mP->getAll();
		}else{
			$this->redirect($this->module, $this->controller);
		}
	}
}